import { Provide } from "@midwayjs/core";
import { SnowflakeIdGenerator } from "snowflake-id-generator";

@Provide()
export class SnowFlake {
  private snowflake: SnowflakeIdGenerator;

  constructor() {
    // 初始化 Snowflake 实例
    // 传入的数据中心 ID 和工作节点 ID 范围为 0-31
    this.snowflake = new SnowflakeIdGenerator({
      timestampBits: 41, // 时间戳占41位（默认值）
      machineIdBits: 10, // 机器 ID 占10位（默认值）
      epoch: 1609459200000, // 2021-01-01 00:00:00 UTC
      machineId: 1 // 当前机器 ID
    });
  }

  // 生成唯一 ID
  generate(): string {
    return this.snowflake.next().toString(16).padEnd(16, "0");
  }
}
